﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace _3d
{
    class Objeto3d
    {
        public Model modelo;
        public Vector3 posicao, escala, rotacao;

        private Matrix mundo;

        public float alpha;

        //public Texture2D textura;
        
        

        public Objeto3d(Model modelo)
        {
            this.modelo = modelo;
            mundo = Matrix.Identity;
            posicao = new Vector3(0, 0, 0);
            rotacao = new Vector3(0, 0, 0);
            escala = new Vector3(1, 1, 1);

            //textura = Game1.Self.Content.Load<Texture2D>("textura");

            alpha = 1;
        }

        public Matrix Mundo
        {
            get
            {
                Matrix matrix = Matrix.Identity * Matrix.CreateScale(escala) * Matrix.CreateRotationX(MathHelper.ToRadians(rotacao.X)) * Matrix.CreateRotationY(MathHelper.ToRadians(rotacao.Y)) * Matrix.CreateRotationZ(MathHelper.ToRadians(rotacao.Z)) * Matrix.CreateTranslation(posicao);
                mundo = matrix;
                return mundo;

            }

            set
            {
                mundo = value;
            }
        }

        public void Draw(Camera3D camera)
        {
            //modelo.Draw(Mundo, view, projection);
            foreach (ModelMesh malha in modelo.Meshes)
            {
                foreach(BasicEffect efeito in malha.Effects)
                {
                    efeito.View = camera.View;
                    efeito.Projection = camera.projection; 
                    efeito.World = Mundo;

                    efeito.EnableDefaultLighting();
                    efeito.FogEnabled = true;
                    efeito.FogColor = Color.Black.ToVector3();
                    efeito.FogStart = 38f;
                    efeito.FogEnd = 47f;

                    //efeito.Alpha = alpha;
                    //efeito.EnableDefaultLighting();
                    efeito.LightingEnabled = true;
                    efeito.AmbientLightColor = Color.Crimson.ToVector3();
                    efeito.DiffuseColor = Color.Crimson.ToVector3();

                    //efeito.TextureEnabled = true;
                    //efeito.Texture = textura;
                }
                malha.Draw();
            }
        }
    }

    
}
